/* TCSS 590A - Cybernetics and Systems
 * Group Project - Modeling
 * By Barry Jones, Naren Meadem, Michael Pitts, Yuan Tao
 * Fall 2012, University of Washington, Tacoma
 */
package model.delayed.tactical;

import java.util.Collection;
import java.util.Map;

import model.delayed.Event;


/**
 * A ShouldNegotiate object provides the functionality for a TacticalController
 * to negotiate with a NegotiableGenerator.
 * @author Michael Pitts
 * @version Nov 29, 2012
 */
public interface ShouldNegotiate {
	
	/**
	 * Returns a Map that indicates how much each event should be negotiated 
	 * up or down.  A value of zero or null indicates that the event shouldn't 
	 * be negotiated.
	 * @param the_time is the current time.
	 * @param the_events is the set of Events received.
	 * @return a Map that points some Events to negotiable values.
	 */
	public Map<Event, Long> negotiate(final long the_time, 
			final Collection<Event> the_events);
}
